package com.cloud.eurekaconsumerribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
 * 它是一个基于HTTP和TCP的客户端负载均衡器。
 *
 * 启动工程 eureka-server、eureka-client、eureka-consumer-ribbon
 * 然后访问http://localhost:2101/consumer
 * 跟踪观察eureka-consumer-ribbon服务是如何消费eureka-client服务的/dc接口的，
 * 并且也可以通过启动多个eureka-client服务来观察其负载均衡的效果。
 *
 * 如何启动单工程多实例？
 * 打开配置后，将默认的Single instance only(单实例)的钩去掉。
 */
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerRibbonApplication {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

	public static void main(String[] args) {
		SpringApplication.run(EurekaConsumerRibbonApplication.class, args);
	}
}
